home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / sc26198.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  13KB  |  534 lines

  1. /*****************************************************************************/
  2.  
  3. /*
  4.  *    sc26198.h  -- SC26198 UART hardware info.
  5.  *
  6.  *    Copyright (C) 1995-1998  Stallion Technologies
  7.  *
  8.  *    This program is free software; you can redistribute it and/or modify
  9.  *    it under the terms of the GNU General Public License as published by
  10.  *    the Free Software Foundation; either version 2 of the License, or
  11.  *    (at your option) any later version.
  12.  *
  13.  *    This program is distributed in the hope that it will be useful,
  14.  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  *    GNU General Public License for more details.
  17.  *
  18.  *    You should have received a copy of the GNU General Public License
  19.  *    along with this program; if not, write to the Free Software
  20.  *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  */
  22.  
  23. /*****************************************************************************/
  24. #ifndef    _SC26198_H
  25. #define    _SC26198_H
  26. /*****************************************************************************/
  27.  
  28. /*
  29.  *    Define the number of async ports per sc26198 uart device.
  30.  */
  31. #define    SC26198_PORTS        8
  32.  
  33. /*
  34.  *    Baud rate timing clocks. All derived from a master 14.7456 MHz clock.
  35.  */
  36. #define    SC26198_MASTERCLOCK    14745600L
  37. #define    SC26198_DCLK        (SC26198_MASTERCLOCK)
  38. #define    SC26198_CCLK        (SC26198_MASTERCLOCK / 2)
  39. #define    SC26198_BCLK        (SC26198_MASTERCLOCK / 4)
  40.  
  41. /*
  42.  *    Define internal FIFO sizes for the 26198 ports.
  43.  */
  44. #define    SC26198_TXFIFOSIZE    16
  45. #define    SC26198_RXFIFOSIZE    16
  46.  
  47. /*****************************************************************************/
  48.  
  49. /*
  50.  *    Global register definitions. These registers are global to each 26198
  51.  *    device, not specific ports on it.
  52.  */
  53. #define    TSTR        0x0d
  54. #define    GCCR        0x0f
  55. #define    ICR        0x1b
  56. #define    WDTRCR        0x1d
  57. #define    IVR        0x1f
  58. #define    BRGTRUA        0x84
  59. #define    GPOSR        0x87
  60. #define    GPOC        0x8b
  61. #define    UCIR        0x8c
  62. #define    CIR        0x8c
  63. #define    BRGTRUB        0x8d
  64. #define    GRXFIFO        0x8e
  65. #define    GTXFIFO        0x8e
  66. #define    GCCR2        0x8f
  67. #define    BRGTRLA        0x94
  68. #define    GPOR        0x97
  69. #define    GPOD        0x9b
  70. #define    BRGTCR        0x9c
  71. #define    GICR        0x9c
  72. #define    BRGTRLB        0x9d
  73. #define    GIBCR        0x9d
  74. #define    GITR        0x9f
  75.  
  76. /*
  77.  *    Per port channel registers. These are the register offsets within
  78.  *    the port address space, so need to have the port address (0 to 7)
  79.  *    inserted in bit positions 4:6.
  80.  */
  81. #define    MR0        0x00
  82. #define    MR1        0x01
  83. #define    IOPCR        0x02
  84. #define    BCRBRK        0x03
  85. #define    BCRCOS        0x04
  86. #define    BCRX        0x06
  87. #define    BCRA        0x07
  88. #define    XONCR        0x08
  89. #define    XOFFCR        0x09
  90. #define    ARCR        0x0a
  91. #define    RXCSR        0x0c
  92. #define    TXCSR        0x0e
  93. #define    MR2        0x80
  94. #define    SR        0x81
  95. #define SCCR        0x81
  96. #define    ISR        0x82
  97. #define    IMR        0x82
  98. #define    TXFIFO        0x83
  99. #define    RXFIFO        0x83
  100. #define    IPR        0x84
  101. #define    IOPIOR        0x85
  102. #define    XISR        0x86
  103.  
  104. /*
  105.  *    For any given port calculate the address to use to access a specified
  106.  *    register. This is only used for unusual access, mostly this is done
  107.  *    through the assembler access routines.
  108.  */
  109. #define    SC26198_PORTREG(port,reg)    ((((port) & 0x07) << 4) | (reg))
  110.  
  111. /*****************************************************************************/
  112.  
  113. /*
  114.  *    Global configuration control register bit definitions.
  115.  */
  116. #define    GCCR_NOACK        0x00
  117. #define    GCCR_IVRACK        0x02
  118. #define    GCCR_IVRCHANACK        0x04
  119. #define    GCCR_IVRTYPCHANACK    0x06
  120. #define    GCCR_ASYNCCYCLE        0x00
  121. #define    GCCR_SYNCCYCLE        0x40
  122.  
  123. /*****************************************************************************/
  124.  
  125. /*
  126.  *    Mode register 0 bit definitions.
  127.  */
  128. #define    MR0_ADDRNONE        0x00
  129. #define    MR0_AUTOWAKE        0x01
  130. #define    MR0_AUTODOZE        0x02
  131. #define    MR0_AUTOWAKEDOZE    0x03
  132. #define    MR0_SWFNONE        0x00
  133. #define    MR0_SWFTX        0x04
  134. #define    MR0_SWFRX        0x08
  135. #define    MR0_SWFRXTX        0x0c
  136. #define    MR0_TXMASK        0x30
  137. #define    MR0_TXEMPTY        0x00
  138. #define    MR0_TXHIGH        0x10
  139. #define    MR0_TXHALF        0x20
  140. #define    MR0_TXRDY        0x00
  141. #define    MR0_ADDRNT        0x00
  142. #define    MR0_ADDRT        0x40
  143. #define    MR0_SWFNT        0x00
  144. #define    MR0_SWFT        0x80
  145.  
  146. /*
  147.  *    Mode register 1 bit definitions.
  148.  */
  149. #define    MR1_CS5            0x00
  150. #define    MR1_CS6            0x01
  151. #define    MR1_CS7            0x02
  152. #define    MR1_CS8            0x03
  153. #define    MR1_PAREVEN        0x00
  154. #define    MR1_PARODD        0x04
  155. #define    MR1_PARENB        0x00
  156. #define    MR1_PARFORCE        0x08
  157. #define    MR1_PARNONE        0x10
  158. #define    MR1_PARSPECIAL        0x18
  159. #define    MR1_ERRCHAR        0x00
  160. #define    MR1_ERRBLOCK        0x20
  161. #define    MR1_ISRUNMASKED        0x00
  162. #define    MR1_ISRMASKED        0x40
  163. #define    MR1_AUTORTS        0x80
  164.  
  165. /*
  166.  *    Mode register 2 bit definitions.
  167.  */
  168. #define    MR2_STOP1        0x00
  169. #define    MR2_STOP15        0x01
  170. #define    MR2_STOP2        0x02
  171. #define    MR2_STOP916        0x03
  172. #define    MR2_RXFIFORDY        0x00
  173. #define    MR2_RXFIFOHALF        0x04
  174. #define    MR2_RXFIFOHIGH        0x08
  175. #define    MR2_RXFIFOFULL        0x0c
  176. #define    MR2_AUTOCTS        0x10
  177. #define    MR2_TXRTS        0x20
  178. #define    MR2_MODENORM        0x00
  179. #define    MR2_MODEAUTOECHO    0x40
  180. #define    MR2_MODELOOP        0x80
  181. #define    MR2_MODEREMECHO        0xc0
  182.  
  183. /*****************************************************************************/
  184.  
  185. /*
  186.  *    Baud Rate Generator (BRG) selector values.
  187.  */
  188. #define    BRG_50            0x00
  189. #define    BRG_75            0x01
  190. #define    BRG_150            0x02
  191. #define    BRG_200            0x03
  192. #define    BRG_300            0x04
  193. #define    BRG_450            0x05
  194. #define    BRG_600            0x06
  195. #define    BRG_900            0x07
  196. #define    BRG_1200        0x08
  197. #define    BRG_1800        0x09
  198. #define    BRG_2400        0x0a
  199. #define    BRG_3600        0x0b
  200. #define    BRG_4800        0x0c
  201. #define    BRG_7200        0x0d
  202. #define    BRG_9600        0x0e
  203. #define    BRG_14400        0x0f
  204. #define    BRG_19200        0x10
  205. #define    BRG_28200        0x11
  206. #define    BRG_38400        0x12
  207. #define    BRG_57600        0x13
  208. #define    BRG_115200        0x14
  209. #define    BRG_230400        0x15
  210. #define    BRG_GIN0        0x16
  211. #define    BRG_GIN1        0x17
  212. #define    BRG_CT0            0x18
  213. #define    BRG_CT1            0x19
  214. #define    BRG_RX2TX316        0x1b
  215. #define    BRG_RX2TX31        0x1c
  216.  
  217. #define    SC26198_MAXBAUD        921600
  218.  
  219. /*****************************************************************************/
  220.  
  221. /*
  222.  *    Command register command definitions.
  223.  */
  224. #define    CR_NULL            0x04
  225. #define    CR_ADDRNORMAL        0x0c
  226. #define    CR_RXRESET        0x14
  227. #define    CR_TXRESET        0x1c
  228. #define    CR_CLEARRXERR        0x24
  229. #define    CR_BREAKRESET        0x2c
  230. #define    CR_TXSTARTBREAK        0x34
  231. #define    CR_TXSTOPBREAK        0x3c
  232. #define    CR_RTSON        0x44
  233. #define    CR_RTSOFF        0x4c
  234. #define    CR_ADDRINIT        0x5c
  235. #define    CR_RXERRBLOCK        0x6c
  236. #define    CR_TXSENDXON        0x84
  237. #define    CR_TXSENDXOFF        0x8c
  238. #define    CR_GANGXONSET        0x94
  239. #define    CR_GANGXOFFSET        0x9c
  240. #define    CR_GANGXONINIT        0xa4
  241. #define    CR_GANGXOFFINIT        0xac
  242. #define    CR_HOSTXON        0xb4
  243. #define    CR_HOSTXOFF        0xbc
  244. #define    CR_CANCELXOFF        0xc4
  245. #define    CR_ADDRRESET        0xdc
  246. #define    CR_RESETALLPORTS    0xf4
  247. #define    CR_RESETALL        0xfc
  248.  
  249. #define    CR_RXENABLE        0x01
  250. #define    CR_TXENABLE        0x02
  251.  
  252. /*****************************************************************************/
  253.  
  254. /*
  255.  *    Channel status register.
  256.  */
  257. #define    SR_RXRDY        0x01
  258. #define    SR_RXFULL        0x02
  259. #define    SR_TXRDY        0x04
  260. #define    SR_TXEMPTY        0x08
  261. #define    SR_RXOVERRUN        0x10
  262. #define    SR_RXPARITY        0x20
  263. #define    SR_RXFRAMING        0x40
  264. #define    SR_RXBREAK        0x80
  265.  
  266. #define    SR_RXERRS        (SR_RXPARITY | SR_RXFRAMING | SR_RXOVERRUN)
  267.  
  268. /*****************************************************************************/
  269.  
  270. /*
  271.  *    Interrupt status register and interrupt mask register bit definitions.
  272.  */
  273. #define    IR_TXRDY        0x01
  274. #define    IR_RXRDY        0x02
  275. #define    IR_RXBREAK        0x04
  276. #define    IR_XONXOFF        0x10
  277. #define    IR_ADDRRECOG        0x20
  278. #define    IR_RXWATCHDOG        0x40
  279. #define    IR_IOPORT        0x80
  280.  
  281. /*****************************************************************************/
  282.  
  283. /*
  284.  *    Interrupt vector register field definitions.
  285.  */
  286. #define    IVR_CHANMASK        0x07
  287. #define    IVR_TYPEMASK        0x18
  288. #define    IVR_CONSTMASK        0xc0
  289.  
  290. #define    IVR_RXDATA        0x10
  291. #define    IVR_RXBADDATA        0x18
  292. #define    IVR_TXDATA        0x08
  293. #define    IVR_OTHER        0x00
  294.  
  295. /*****************************************************************************/
  296.  
  297. /*
  298.  *    BRG timer control register bit definitions.
  299.  */
  300. #define    BRGCTCR_DISABCLK0    0x00
  301. #define    BRGCTCR_ENABCLK0    0x08
  302. #define    BRGCTCR_DISABCLK1    0x00
  303. #define    BRGCTCR_ENABCLK1    0x80
  304.  
  305. #define    BRGCTCR_0SCLK16        0x00
  306. #define    BRGCTCR_0SCLK32        0x01
  307. #define    BRGCTCR_0SCLK64        0x02
  308. #define    BRGCTCR_0SCLK128    0x03
  309. #define    BRGCTCR_0X1        0x04
  310. #define    BRGCTCR_0X12        0x05
  311. #define    BRGCTCR_0IO1A        0x06
  312. #define    BRGCTCR_0GIN0        0x07
  313.  
  314. #define    BRGCTCR_1SCLK16        0x00
  315. #define    BRGCTCR_1SCLK32        0x10
  316. #define    BRGCTCR_1SCLK64        0x20
  317. #define    BRGCTCR_1SCLK128    0x30
  318. #define    BRGCTCR_1X1        0x40
  319. #define    BRGCTCR_1X12        0x50
  320. #define    BRGCTCR_1IO1B        0x60
  321. #define    BRGCTCR_1GIN1        0x70
  322.  
  323. /*****************************************************************************/
  324.  
  325. /*
  326.  *    Watch dog timer enable register.
  327.  */
  328. #define    WDTRCR_ENABALL        0xff
  329.  
  330. /*****************************************************************************/
  331.  
  332. /*
  333.  *    XON/XOFF interrupt status register.
  334.  */
  335. #define    XISR_TXCHARMASK        0x03
  336. #define    XISR_TXCHARNORMAL    0x00
  337. #define    XISR_TXWAIT        0x01
  338. #define    XISR_TXXOFFPEND        0x02
  339. #define    XISR_TXXONPEND        0x03
  340.  
  341. #define    XISR_TXFLOWMASK        0x0c
  342. #define    XISR_TXNORMAL        0x00
  343. #define    XISR_TXSTOPPEND        0x04
  344. #define    XISR_TXSTARTED        0x08
  345. #define    XISR_TXSTOPPED        0x0c
  346.  
  347. #define    XISR_RXFLOWMASK        0x30
  348. #define    XISR_RXFLOWNONE        0x00
  349. #define    XISR_RXXONSENT        0x10
  350. #define    XISR_RXXOFFSENT        0x20
  351.  
  352. #define    XISR_RXXONGOT        0x40
  353. #define    XISR_RXXOFFGOT        0x80
  354.  
  355. /*****************************************************************************/
  356.  
  357. /*
  358.  *    Current interrupt register.
  359.  */
  360. #define    CIR_TYPEMASK        0xc0
  361. #define    CIR_TYPEOTHER        0x00
  362. #define    CIR_TYPETX        0x40
  363. #define    CIR_TYPERXGOOD        0x80
  364. #define    CIR_TYPERXBAD        0xc0
  365.  
  366. #define    CIR_RXDATA        0x80
  367. #define    CIR_RXBADDATA        0x40
  368. #define    CIR_TXDATA        0x40
  369.  
  370. #define    CIR_CHANMASK        0x07
  371. #define    CIR_CNTMASK        0x38
  372.  
  373. #define    CIR_SUBTYPEMASK        0x38
  374. #define    CIR_SUBNONE        0x00
  375. #define    CIR_SUBCOS        0x08
  376. #define    CIR_SUBADDR        0x10
  377. #define    CIR_SUBXONXOFF        0x18
  378. #define    CIR_SUBBREAK        0x28
  379.  
  380. /*****************************************************************************/
  381.  
  382. /*
  383.  *    Global interrupting channel register.
  384.  */
  385. #define    GICR_CHANMASK        0x07
  386.  
  387. /*****************************************************************************/
  388.  
  389. /*
  390.  *    Global interrupting byte count register.
  391.  */
  392. #define    GICR_COUNTMASK        0x0f
  393.  
  394. /*****************************************************************************/
  395.  
  396. /*
  397.  *    Global interrupting type register.
  398.  */
  399. #define    GITR_RXMASK        0xc0
  400. #define    GITR_RXNONE        0x00
  401. #define    GITR_RXBADDATA        0x80
  402. #define    GITR_RXGOODDATA        0xc0
  403. #define    GITR_TXDATA        0x20
  404.  
  405. #define    GITR_SUBTYPEMASK    0x07
  406. #define    GITR_SUBNONE        0x00
  407. #define    GITR_SUBCOS        0x01
  408. #define    GITR_SUBADDR        0x02
  409. #define    GITR_SUBXONXOFF        0x03
  410. #define    GITR_SUBBREAK        0x05
  411.  
  412. /*****************************************************************************/
  413.  
  414. /*
  415.  *    Input port change register.
  416.  */
  417. #define    IPR_CTS            0x01
  418. #define    IPR_DTR            0x02
  419. #define    IPR_RTS            0x04
  420. #define    IPR_DCD            0x08
  421. #define    IPR_CTSCHANGE        0x10
  422. #define    IPR_DTRCHANGE        0x20
  423. #define    IPR_RTSCHANGE        0x40
  424. #define    IPR_DCDCHANGE        0x80
  425.  
  426. #define    IPR_CHANGEMASK        0xf0
  427.  
  428. /*****************************************************************************/
  429.  
  430. /*
  431.  *    IO port interrupt and output register.
  432.  */
  433. #define    IOPR_CTS        0x01
  434. #define    IOPR_DTR        0x02
  435. #define    IOPR_RTS        0x04
  436. #define    IOPR_DCD        0x08
  437. #define    IOPR_CTSCOS        0x10
  438. #define    IOPR_DTRCOS        0x20
  439. #define    IOPR_RTSCOS        0x40
  440. #define    IOPR_DCDCOS        0x80
  441.  
  442. /*****************************************************************************/
  443.  
  444. /*
  445.  *    IO port configuration register.
  446.  */
  447. #define    IOPCR_SETCTS        0x00
  448. #define    IOPCR_SETDTR        0x04
  449. #define    IOPCR_SETRTS        0x10
  450. #define    IOPCR_SETDCD        0x00
  451.  
  452. #define    IOPCR_SETSIGS        (IOPCR_SETRTS | IOPCR_SETRTS | IOPCR_SETDTR | IOPCR_SETDCD)
  453.  
  454. /*****************************************************************************/
  455.  
  456. /*
  457.  *    General purpose output select register.
  458.  */
  459. #define    GPORS_TXC1XA        0x08
  460. #define    GPORS_TXC16XA        0x09
  461. #define    GPORS_RXC16XA        0x0a
  462. #define    GPORS_TXC16XB        0x0b
  463. #define    GPORS_GPOR3        0x0c
  464. #define    GPORS_GPOR2        0x0d
  465. #define    GPORS_GPOR1        0x0e
  466. #define    GPORS_GPOR0        0x0f
  467.  
  468. /*****************************************************************************/
  469.  
  470. /*
  471.  *    General purpose output register.
  472.  */
  473. #define    GPOR_0            0x01
  474. #define    GPOR_1            0x02
  475. #define    GPOR_2            0x04
  476. #define    GPOR_3            0x08
  477.  
  478. /*****************************************************************************/
  479.  
  480. /*
  481.  *    General purpose output clock register.
  482.  */
  483. #define    GPORC_0NONE        0x00
  484. #define    GPORC_0GIN0        0x01
  485. #define    GPORC_0GIN1        0x02
  486. #define    GPORC_0IO3A        0x02
  487.  
  488. #define    GPORC_1NONE        0x00
  489. #define    GPORC_1GIN0        0x04
  490. #define    GPORC_1GIN1        0x08
  491. #define    GPORC_1IO3C        0x0c
  492.  
  493. #define    GPORC_2NONE        0x00
  494. #define    GPORC_2GIN0        0x10
  495. #define    GPORC_2GIN1        0x20
  496. #define    GPORC_2IO3E        0x20
  497.  
  498. #define    GPORC_3NONE        0x00
  499. #define    GPORC_3GIN0        0x40
  500. #define    GPORC_3GIN1        0x80
  501. #define    GPORC_3IO3G        0xc0
  502.  
  503. /*****************************************************************************/
  504.  
  505. /*
  506.  *    General purpose output data register.
  507.  */
  508. #define    GPOD_0MASK        0x03
  509. #define    GPOD_0SET1        0x00
  510. #define    GPOD_0SET0        0x01
  511. #define    GPOD_0SETR0        0x02
  512. #define    GPOD_0SETIO3B        0x03
  513.  
  514. #define    GPOD_1MASK        0x0c
  515. #define    GPOD_1SET1        0x00
  516. #define    GPOD_1SET0        0x04
  517. #define    GPOD_1SETR0        0x08
  518. #define    GPOD_1SETIO3D        0x0c
  519.  
  520. #define    GPOD_2MASK        0x30
  521. #define    GPOD_2SET1        0x00
  522. #define    GPOD_2SET0        0x10
  523. #define    GPOD_2SETR0        0x20
  524. #define    GPOD_2SETIO3F        0x30
  525.  
  526. #define    GPOD_3MASK        0xc0
  527. #define    GPOD_3SET1        0x00
  528. #define    GPOD_3SET0        0x40
  529. #define    GPOD_3SETR0        0x80
  530. #define    GPOD_3SETIO3H        0xc0
  531.  
  532. /*****************************************************************************/
  533. #endif
  534.